/**
 * SDCard单例模式抽象类,每个手机只能有一个存储卡
 * @author William
 * 2012-3-3
 */

package com.ytu.clouddisk.sdcard;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

import android.os.Environment;

public class SDCard {

	public static SDCard instance = null;
//	private File[] files; // files 永远是列出当前目录下的所有文件
	private String currentDir;

	private SDCard() {
		currentDir = Environment.getExternalStorageDirectory().getAbsolutePath();
	}

	/**
	 * 获取单例
	 **/
	public static SDCard getInstance() {
		if (instance == null)
			instance = new SDCard();
		return instance;
	}

	/**
	 * 获取当前路径绝对地址
	 * */
	public String getCurrentDir() {
		return currentDir;
	}
	
	/**
	 * 设置当前路径
	 */
	public void setCurrentDir(String path) {
		currentDir = path;
	}

	/**
	 * 浏览存储卡根目录
	 * */
	public File[] browseSDCard() {
		return browseFile(Environment.getExternalStorageDirectory().getPath());
	}

	/**
	 * 返回上一级 获取上一级的文件列表
	 * */
	public File[] upLevel() {
		if (currentDir != "/mnt/sdcard") {            
		     currentDir = (new File(currentDir)).getParent();
			 return browseFile(currentDir);
		} else
			return null;
	}

	/**
	 * 浏览指定文件夹,如果为文件则打开
	 * */
	public File[] browseFile(String path) {
		File file = new File(path);
		if (file.isDirectory()) {
			return file.listFiles();
		} else if(file.isFile()){
			return null;
		}
		return null;   //这里有个小bug
	}

	/**
	 * 获取文件名数组
	 * */

	@SuppressWarnings("null")
	public List<String> getFilesName(File[] files) {
		List<String> fileName = new ArrayList<String>();
		if (!getCurrentDir().equals("/mnt/sdcard"))
			fileName.add("上一级");
		for (File f : files) {
			if (f.isDirectory()) {
				fileName.add(f.getName().toString());
			} else if (f.isFile()) {
				fileName.add(f.getName().toString());
			}
		}

		return fileName;
	}

	// /* 单击时打开文件 */
	// protected void openFile(File aFile) {
	// Intent intent = new Intent();
	// intent.setAction(android.content.Intent.ACTION_VIEW);
	// File file = new File(aFile.getAbsolutePath());
	// String fileName = file.getName();
	// /**/
	// if
	// (checkEndsWithInStringArray(fileName,getResources().getStringArray(R.array.fileEndingImage)))
	// {
	// intent.setDataAndType(Uri.fromFile(file), "image/*");
	// } else if (checkEndsWithInStringArray(fileName, getResources()
	// .getStringArray(R.array.fileEndingAudio))) {
	// intent.setDataAndType(Uri.fromFile(file), "audio/*");
	// } else if (checkEndsWithInStringArray(fileName, getResources()
	// .getStringArray(R.array.fileEndingVideo))) {
	// intent.setDataAndType(Uri.fromFile(file), "video/*");
	// }
	//
	// }
	//

	/* 用文件（夹）数组填充列表 */

}
